public class Day3 {


    //1.扫雷游戏

    int[] dx = {1,-1,0,0, 1,1,-1,-1};
    int[] dy = {0,0,1,-1, -1,1,1,-1};
    int m,n;
    public char[][] updateBoard(char[][] board, int[] click) {
        m = board.length;
        n = board[0].length;
        int i = click[0],j = click[1];
        if(board[i][j] == 'M') board[i][j] = 'X';
        else floodfill(board,i,j);
        return board;
    }
    public void floodfill(char[][] ret,int i,int j) {
        //1.判断(i,j)坐标周围雷的个数
        int count = 0;
        for(int k=0;k<8;k++) {
            int x = i + dx[k];
            int y = j + dy[k];
            if(x>=0&&x<m && y>=0&&y<n && ret[x][y]=='M') count++;
        }
        if(count > 0) {
            ret[i][j] = (char)(count+'0');
            return;
        }
        //2.(i,j)周围无雷，递归展开
        ret[i][j] = 'B';
        for(int k=0;k<8;k++) {
            int x = i + dx[k];
            int y = j + dy[k];
            if(x>=0&&x<m && y>=0&&y<n && ret[x][y]=='E') {
                floodfill(ret,x,y);
            }
        }
    }
    //2.
//    boolean[][] check;
//    int ret;
//    int[][] nums;
//    int m,n;
//    public int wardrobeFinishing(int _m, int _n, int cnt) {
//        m=_m;n=_n;
//        check = new boolean[m][n];
//        nums = new int[m][n];
//        floodfill(0,0,cnt);
//        return ret;
//    }
//    public void floodfill(int i,int j,int cnt) {
//        ret++;
//        check[i][j]=true;
//        //1.判断右边
//        int x = i+1,y=j;
//        if(x<m && (func(x,y))<=cnt && !check[x][y]) floodfill(x,y,cnt);
//
//        //2.判断下面
//        x=i;y=j+1;
//        if(y<n && (func(x,y))<=cnt&& !check[x][y]) floodfill(x,y,cnt);
//
//    }
//    public int func(int x,int y) {
//        int count=0;
//        while(x!=0) {
//            count+=x%10;
//            x/=10;
//        }
//        while(y!=0) {
//            count+=y%10;
//            y/=10;
//        }
//        return count;
//    }



}
